package les.portal.testes;

import org.hibernate.Session;
import org.hibernate.Transaction;

import junit.framework.TestCase;
import les.portal.negocio.dao.DisciplinaDAO;
import les.portal.negocio.to.DisciplinaTO;
import les.portal.util.HibernateUtil;

/**
 * Teste para a classe DisciplinaDAO.
 * @author Anne Caroline
 * @author Bruno Coitinho
 * @author Gustavo de Farias
 * @author Maria de Lourdes
 *
 * 
 */
public class DisciplinaDAOTest extends TestCase {
	/*
	 * Test method for 'les.portal.negocio.dao.DisciplinaDAO.readAPartirDoNome(String)'
	 */
	public void testreadAPartirDoNome() throws Exception {
		
		Session sessao = HibernateUtil.currentSession();
		DisciplinaDAO dao = new DisciplinaDAO(sessao);
		
		DisciplinaTO disciplinaTO = new DisciplinaTO();
		
		assertNull(disciplinaTO.getId());
		assertNull(dao.readAPartirDoNome("TESTE"));
		
		disciplinaTO.setNome("TESTE");
		disciplinaTO.setCasosDeUso(new Integer(20));
		
		Transaction t = sessao.beginTransaction();
		
		Integer id1 = dao.create(disciplinaTO);
		t.commit();
		
		assertEquals(id1, disciplinaTO.getId());
		assertNotNull(dao.readAPartirDoNome("TESTE"));
		assertEquals(id1, dao.read(id1).getId());
		assertEquals("TESTE", dao.read(id1).getNome());
		assertEquals(new Integer(20), dao.read(id1).getCasosDeUso());
		
		//remove
		t = sessao.beginTransaction();
		dao.delete(disciplinaTO);
		t.commit();
		assertNull(dao.readAPartirDoNome("TESTE"));
		
	}

}
